package cn.demoncat.util.lang.entity;

import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

/**
 * String类型的Set
 * 
 * @author 延晓磊
 *
 * @since 2019年5月17日
 */
public class SetStr extends HashSet<String>{
 
	private static final long serialVersionUID = 1L;

	/**
	 * 实例化
	 * 
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2018年11月21日
	 */
	public static SetStr getInstance() {
		return new SetStr();
	}
	
	/**
	 * 实例化
	 * 
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2018年11月21日
	 */
	public static SetStr getInstance(String... value) {
		SetStr list = new SetStr();
		Collections.addAll(list, value);
		return list;
	}

	/**
	 * to array
	 *
	 * @param list
	 * @return
	 *
	 * @author 延晓磊
	 *
	 * @since 2018年11月21日
	 */
	public static String[] toArr(Set<String> list){
		return list.toArray(new String[0]);
	}

	/**
	 * to array
	 *
	 * @return
	 *
	 * @author 延晓磊
	 *
	 * @since 2018年11月21日
	 */
	public String[] toArr(){
		return toArr(this);
	}

	/**
	 * 添加
	 *
	 * @param list
	 * @return
	 *
	 * @author 延晓磊
	 * @since 2021年03月03日
	 */
	public SetStr push(Collection<String> list){
		this.addAll(list);
		return this;
	}

	/**
	 * 添加
	 *
	 * @param value
	 * @return
	 *
	 * @author 延晓磊
	 * @since 2021年03月03日
	 */
	public SetStr push(String ... value){
		if (value != null && value.length > 0) {
			Collections.addAll(this, value);
		}
		return this;
	}
}
